package com.zxg.androidbuslearn

import android.content.Context
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

/**
 * 作者: 赵小刚
 * 生成时间: 2018/10/30.
 * 版本: 1.0
 * 简介:
 * 修改记录:
 */
class SecondFragment : Fragment() {

    var mCallBack : CallBack? = null

    override fun onAttach(context: Context?) {
        super.onAttach(context)
        // 判断当前Activity是否继承 回调接口，没有将抛出异常
        try {
            mCallBack = activity as CallBack
        } catch (e: ClassCastException) {
            throw ClassCastException(activity.toString() + "must implement CallBack!")
        }
        LogUtil.logE(TAG, "SecondFragment -- onAttach")
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        LogUtil.logE(TAG, "SecondFragment -- onCreate")
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        LogUtil.logE(TAG, "SecondFragment -- onCreateView")
        // 传参(1.2)-- 接收参数
        if (null != arguments) {
            val contentText = arguments!!.getString("Key")
        }
        val view = inflater.inflate(R.layout.fragment_second, container, false)
        return view
    }

    // 传参(2.1) -- 使用公开方法- Activity To Fragment
    fun setData(value: String) {
        LogUtil.logE(TAG, value)
    }

    // 传参(2.2) -- 使用公开方法 - Fragment To Activity
    fun a() {
        val activity = activity
        if (null != activity && activity is FragmentMainActivity) {
            activity.setDataFromSecondFragment("Fragment发送消息到Activity")
        }
    }

    // 传参(3.1) -- 使用接口回调
    fun b() {
        mCallBack!!.onContentChange("传参(3.1) —— Fragment发送消息到Activity")
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        LogUtil.logE(TAG, "SecondFragment -- onActivityCreated")
    }

    override fun onStart() {
        super.onStart()
        LogUtil.logE(TAG, "SecondFragment -- onStart")
    }

    override fun onResume() {
        super.onResume()
        LogUtil.logE(TAG, "SecondFragment -- onResume")
    }

    override fun onPause() {
        super.onPause()
        LogUtil.logE(TAG, "SecondFragment -- onPause")
    }

    override fun onStop() {
        super.onStop()
        LogUtil.logE(TAG, "SecondFragment -- onStop")
    }

    override fun onDestroyView() {
        super.onDestroyView()
        LogUtil.logE(TAG, "SecondFragment -- onDestroyView")
    }

    override fun onDestroy() {
        super.onDestroy()
        LogUtil.logE(TAG, "SecondFragment -- onDestroy")
    }

    override fun onDetach() {
        super.onDetach()
        LogUtil.logE(TAG, "SecondFragment -- onDetach")
    }

    companion object {
        private val TAG = "SecondFragment"
    }

    // 传参(3.1) -- 使用接口回调
    // 定义回调接口
    interface CallBack {
        // 定义一个内容发送改变的回调方法
        fun onContentChange(result: String)
    }
}